<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use DB;
use Hash;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    //后台用户添加

    public function getAdd()
    {
        //显示添加页面
        return view('/admin/user/add');
    }



    //处理表单提交添加数据
    public function postInsert(Request $request)
    {
        //查看所有
        // ($request->all());

        //检测用名表单不能为空
        // 手动检测
            // if(!$request->input('uname')){
            //     //直接返回
            //         //with是向session中闪存错误信息
            //     return back()->with('error','用户名不能为空');

            // }
        //laravel中的方法 自动闪存
          $this->validate($request, [
                'uname' => 'required|regex:/\w{3,18}/',
                'upass' => 'required',
                'email' => 'required',
                'phone' => 'required|regex:/\d{7,15}/',
            ],[
                'uname.required'=>'用户名不能为空',
                'uname.regex'=>'请输入3到18为的用户名',
                'upass.required'=>'密码不能为空',
                'email.required'=>'邮箱不能为空',
                'phone.required'=>'手机不能为空',
                'phone.regex'=>'请输入正确格式的手机号',
            ]);



        //提取其它数据
        $data = $request->only('uname','upass','email','phone');

        //数据token
        $data['token'] = str_random(50);
        //状态码为1 未激活
        $data['status'] = 1;
        //密码加密
        $data['upass'] = Hash::make($data['upass']);

        //处理图片上传
        $data['pic'] = self::upload($request);

        // dd($data);
        // 数据插入
        $res = DB::table('users')->insert($data);
        // 判断
        if($res)
        {
            return redirect('/admin/user/index')->with('success','添加成功');
        }else
        {
            return back()->with('error','添加失败');
        }
       
    }

    //显示后台用户列表
    public function getIndex(Request $request)
    {   
        // dd($request->all());
        //获取分页条数
        $num = $request->input('num',5);
        // dd($num);

        //查询数据库 使用分页
        // $users = DB::table('users')->where('username','like','%'.$request->input('keyword').'%')->paginate($num);
        
        //判断搜索条件是否存在
        // if($request->input('keywords')){
        //     $users = DB::table('users')->where('username','like','%'.$request->input('keywords').'%')->paginate($num);
        // }else{
        //     $users = DB::table('users')->paginate($num);
        // }

        //在laravel中给的where条件 传了一个闭包$query代表当前数据库对象
        $users = DB::table('users')->where(function($query) use($request){
            //判断是否有where条件
            if ($request->input('keywords')) {
                $query->where('uname','like','%'.$request->input('keywords').'%');        
            }
        })->paginate($num);

        // var_dump($query);
        // dd($res);    
        return view('admin.user.index',['user'=>$users,'request'=>$request->all()]);
    }

    //图片上传操作
    public static function upload(Request $request)
    {
        //检测是否有文件上传
        if($request->hasFile('pic')){
            //文件名称
            $name = md5(time()+rand(1111,9999999));
            //文件后缀名获取
            $suffix = $request->file('pic')->getClientOriginalExtension();
            $arr = ['jpg','png','gif'];
            //判断文件上传类型
            if(!in_array($suffix,$arr)){
                echo '上传文件不符合要求';die;
            }
            //将指定文件移动到指定位置
            $request->file('pic')->move('./uploads',$name.'.'.$suffix);

            //将文件的路径返回
            return '/uploads/'.$name.'.'.$suffix;
        }

    }

    //后台用户删除操作  不能使用postAjaxDelete。。。这样的命名 
    public function postDelete(Request $request)
    {
        $id = $request->input('id');

        //执行数据删除
        $res = DB::table('users')->where('id',$id)->delete();
        //判断返回
        if($res){
            echo 1;
        }else{
            echo 0;
        }
    }


    //后台用户修改页面
    public function getEdit(Request $request)
    {
    	// dd($request->all());
    	$id = $request->input('id');
    	//通过id查询
    	$user = DB::table('users')->where('id',$id)->first();
    	//解析模板 分配变量
        return view('admin.user.edit',['user'=>$user]);
    }

    //后台用户修改操作
    public function postDoedit(Request $request)
    {
    	// dd($request->all());

	    //laravel中的方法 自动闪存
      	$this->validate($request, [
            'uname' => 'required|regex:/\w{3,18}/',
            'email' => 'required',
            'phone' => 'required|regex:/\d{7,15}/',
        ],[
            'uname.required'=>'用户名不能为空',
            'uname.regex'=>'请输入3到18为的用户名',
            'email.required'=>'邮箱不能为空',
            'phone.required'=>'手机不能为空',
            'phone.regex'=>'请输入正确格式的手机号',
        ]);



    	//提取数据修改
    	$data = $request->only('uname','email','phone');
    	$id = $request->input('id');
    	 //处理图片上传
        if($request->hasFile('pic')){
            $data['pic'] = self::upload($request);
        }else{
            $data['pic'] = DB::table('users')->where('id',$id)->first()->pic;
        }
        // dd($data);
    	//执行数据修改
        $res = DB::table('users')->where('id',$id)->update($data);
        // dd($res);
    	// 判断
        if($res)
        {
            return redirect('/admin/user/index')->with('success','修改成功');
        }else
        {
            return back()->with('error','修改失败');
        }
    }
  
}
